﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ServiceLayer
{
    using DAOLayer;
    using Forms;
    using System.Windows.Forms;
    using System.Data;

    /// <summary>
    /// Объект служебного уровня содержащий в себе 
    /// основные параметры подключение к БД и основные
    /// таблицы используемые в работе.
    /// </summary>
    public class CDataBase: CDAOTransportions
    {
        /// <summary>
        /// Конструктор объекта БД, который использует известные параметры подключения к БД
        /// </summary>
        /// <param name="Server">Имя сервера</param>
        /// <param name="Database">Имя базы данных</param>
        /// <param name="User">Имя пользователя для подключения</param>
        /// <param name="Password">Пароль для подключения</param>
        public CDataBase(string Server, string Database, string User, string Password)
            : base(Server, Database, User, Password)
        {
        }
        /// <summary>
        /// Конструктор по умолчанию. При его вызове будет показано 
        /// диалоговое окно для ввода параметров соединения
        /// </summary>
        public CDataBase()
        {
            Reconnect();
        }
        /// <summary>
        /// Метод осуществляющий переподключение к БД, 
        /// при его вызове будет показано окно для ввода параметров соединения. 
        /// </summary>
        /// <returns>В случае если соединение установлено вернёт true, в противном случае false.</returns>
        public bool Reconnect()
        {
            FormConnectionParams ConnectDialog = new FormConnectionParams();
            if (ConnectDialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    ReconnectTo(ConnectDialog.Server,
                                ConnectDialog.DataBase,
                                ConnectDialog.User,
                                ConnectDialog.Password);
                }
                catch (Exception exc)
                {
                    MessageBox.Show(exc.Message,
                                    "Ошибка",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                    return false;
                }
                return true;
            }
            return (Connection != null && Connection.State == ConnectionState.Open);
        }
    }
}
